package com.gitee.wsl.ext.array.bytes

import com.gitee.wsl.lang.ByteOrder

fun UInt.toByteArray(byteOrder: ByteOrder = ByteOrder.BigEndian): ByteArray{
    val bytes = ByteArray(UInt.SIZE_BYTES)
    toByteArray(bytes,byteOrder,0)
    return bytes
}

fun UInt.toByteArray(byteArray: ByteArray,byteOrder: ByteOrder= ByteOrder.BigEndian,startIndex:Int=0){
    byteArray.updateUseLittleEndian(byteOrder,startIndex,UInt.SIZE_BYTES){
        (this shr 8*it).toByte()
    }
}

fun ByteArray.toUInt(order: ByteOrder = ByteOrder.BigEndian,startIndex: Int = 0): UInt
{
    var value:UInt = 0u
    getUseLittleEndian(order,startIndex,UInt.SIZE_BYTES) { index, byte -> value = value or (byte.toUByte().toUInt() shl 8 * index) }
    return value
}